Peripheral Component Interconnect (PCI) is a second generation parallel bus architecture developed in 1992 as a replacement for the Industry Standard Architecture (ISA) bus. In the PCI standard, all the devices share the same bidirectional, 32-bit (or 64-bit), parallel signal path. The PCI bus brought a number of advantages over the ISA bus, including processor independence, buffered isolation, bus broadcasting, and true plug-and-play operation. PCI Express (PCIe) is a third generation general-purpose serial I/O interconnect designed to replace the PCI bus. Rather than being a bus, PCI Express is structured around point-to-point serial links called lanes.
The point-to-point serial link architecture of PCI Express is well suited for distributed processing via a distributed multiprocessor architecture model. Distributed processors are generally optimized to implement data packet processing functions. Unlike general-purpose central processing units (CPUs) that rely heavily on caching for improving performance, distributed processors have a lack of locality in packet processing and need for high-performance I/O that has pushed designers to come up with innovative architectures to reduce processing latency while still processing packets at high data rates.
PCIe has multicast support. Multicasting with PCIe, however, requires multicasting support in either the root ports of the central processing unit (CPU) or in the system endpoints. Additionally, multicasting with PCIe requires operating system support. That is, multicasting in a conventional PCIe environment requires the operating system to enable the setup of multicast control registers and to define one multicast memory region within the system address map. Further, PCIe multicast functionality does not cope well with untranslated addresses in a virtualized environment except to block them. PCIe requires that multicast transaction be sent in translated address space (i.e. HPA space) only. Additionally, conventional PCIe multicast requires PCIe Multicast capability support in Root Ports in addition to Switch ports to multicast across Root Ports inside a root complex. Therefore, the ability to multicast in a switch downstream of the root ports would enable multiple endpoint devices to multicast to each other without requiring operating system support.